package Observer_Strategy;

public class ObserverStrategyDemo {
    public static void main(String[] args) {
        // 创建被观察者（股票市场）
        StockMarket stockMarket = new StockMarket();

        // 创建观察者并注册到被观察者
        Observer observerA = new ConcreteObserverA("Observer A");
        Observer observerB = new ConcreteObserverB("Observer B");

        stockMarket.addObserver(observerA);
        stockMarket.addObserver(observerB);

        // 设置不同的策略
        StockPriceStrategy conservativeStrategy = new ConservativeStrategy();
        StockPriceStrategy aggressiveStrategy = new AggressiveStrategy();

        // 模拟股票价格变化，并通知观察者
        double initialPrice = 1.0;
        stockMarket.notifyObservers(initialPrice);

        // 第一轮股价变化，触发观察者的更新
        double priceChange = 0.02;
        double newPrice = initialPrice * (1 + priceChange);

        // 使用保守策略
        System.out.println("\n使用保守策略");
        conservativeStrategy.applyStrategy(newPrice);

        // 使用激进策略
        System.out.println("\n使用激进策略");
        aggressiveStrategy.applyStrategy(newPrice);
    }
}
